package com.bjsxt.util;

import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author ALIENWARE
 * @version v1.0.0
 * @package : com.bjsxt.util
 * @description :
 * 短信信息格式化字符串工具类：
 * 该类将 ${xxx} 类型的字符串进行替换值
 * @create on : 12/27/2023
 **/
public class SmsStringFormatUtils {


    /**
     * 对传入的字符串进行字符串的替换
     *
     * @param content 需要进行替换字符串的原文 比如： 您的验证码为：${code}，请勿泄露于他人！
     * @param rules   需要替换字符串的规则 键值对例如 {"${code}", "1234"}
     * @return 替换完成的字符串
     */
    public static String parse(String content, Map<String, String> rules) {
        // 创建正则表达式匹配对象
        Pattern pattern = Pattern.compile("\\$\\{.*?}");
        // 对字符串的内容进行匹配
        Matcher matcher = pattern.matcher(content);
        // 创建返回的字符串对象
        StringBuffer stringBuffer = new StringBuffer();
        // 循环遍历匹配的值
        while (matcher.find()) {
            // 获取匹配的文字
            String group = matcher.group();
            // 对其中的文字进行字符串的替换
            matcher.appendReplacement(stringBuffer, rules.get(group));
        }
        // 将其他的文字填入
        matcher.appendTail(stringBuffer);
        // 返回
        return stringBuffer.toString();
    }
}
